//1. 引入gulp模块

const gulp = require("gulp");
const htmlmin = require("gulp-htmlmin");
const cssmin = require("gulp-cssmin");
const del = require("del");
var uglify = require('gulp-uglify');
const babel=require("gulp-babel")
// var pipeline = require('readable-stream').pipeline;
//定义一个任务
//gulp的任务是异步,就不知道什么时候 会完成 aaa的任务
//就会提示 The following tasks did not complete
//就在函数内部 写上 return 
// gulp.task("aaa", function () {
//     console.log("run,任务执行了!");
//     return "";
// })

//任务名称叫做 default
// gulp.task("default",function () {
//     console.log("default,任务执行了!");
//     return ""
// })


gulp.task("del", function () {
    return del("./dist");
})
//了解到有哪些模块
//在cp大法

//压缩html,任务名称 就叫做htmlmin
gulp.task("htmlmin", function () {
    //将哪里的文件,进行压缩,压缩知道,放哪里去
    return gulp.src(["./src/*.html", "./src/*.htm"]) //管道 有入口和出口
        .pipe(htmlmin({ collapseWhitespace: true })) //去掉空白
        .pipe(gulp.dest("./dist"))
})

//压缩css

gulp.task('cssmin', function () {
    return gulp.src('./src/css/*.css')
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'));
});

//cp 把src下的全不赋值过去,在覆盖
gulp.task("cp", function () {
   return  gulp.src("./src/css/*").pipe(gulp.dest("./dist/css"));
})

gulp.task("cpLib", function () {
    return  gulp.src("./src/libs/**").pipe(gulp.dest("./dist/libs"));
 })

gulp.task("cpImg", function () {
    return gulp.src("./src/images/*").pipe(gulp.dest("./dist/images"));
})

//压缩js
gulp.task('jsmin', function () {
    return gulp.src("./src/js/*.js")
        .pipe(babel({
            presets: ['@babel/preset-env']
        }))
        .pipe(uglify())
        .pipe(gulp.dest("./dist/js"))
});



//把多个命令集中到一起
// Task function must be specified , gulp.series
//这个地方 不能这样配置
// gulp 4.x的做法
gulp.task("default", gulp.series(["del", "cp", "cpLib","cpImg", "htmlmin", "cssmin","jsmin"]))
//gulp 3.9的做法
// gulp.task("default", ["del", "htmlmin", "cssmin"])